Property Naming Strategy ব্যবহার করে JSON Fields এর নাম কাস্টমাইজ করা

Java Technologies - জ্যাকসন (Jackson) - Jackson এর সাথে Custom Naming Strategy ব্যবহার
189

Jackson-এ PropertyNamingStrategy বা PropertyNamingStrategies ব্যবহার করে Java ফিল্ডের নাম এবং JSON ফিল্ডের নামের মধ্যে কাস্টম ম্যাপিং তৈরি করা যায়। এটি বিশেষভাবে দরকার হয় যখন JSON ফিল্ডের নাম Java ফিল্ডের নামের থেকে ভিন্ন হয় বা নির্দিষ্ট নামকরণের কনভেনশন (যেমন snake_case বা kebab-case) অনুসরণ করতে হয়।


Property Naming Strategies

Jackson আপনাকে বিভিন্ন বিল্ট-ইন নামকরণ কৌশল প্রদান করে:

  1. SNAKE_CASE: ফিল্ড নামগুলিকে snake_case-এ রূপান্তর করে।
  2. UPPER_CAMEL_CASE: ফিল্ড নামগুলিকে UpperCamelCase-এ রূপান্তর করে।
  3. KEBAB_CASE: ফিল্ড নামগুলিকে kebab-case-এ রূপান্তর করে।
  4. LOWER_CASE: ফিল্ড নামগুলিকে lowercase-এ রূপান্তর করে।
  5. Custom Strategy: নিজের কাস্টম স্ট্র্যাটেজি তৈরি করা যায়।

কোড উদাহরণ

Step 1: Maven Dependency

প্রথমে, Jackson লাইব্রেরি আপনার প্রোজেক্টে যোগ করুন:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>

Step 2: একটি ডেটা মডেল তৈরি করুন

Java ফিল্ডগুলোর নাম camelCase ফরম্যাটে থাকবে।

public class Person {
    private String firstName;
    private String lastName;
    private int age;

    // Constructors
    public Person() {}

    public Person(String firstName, String lastName, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }

    // Getters and Setters
    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

Step 3: ObjectMapper-এ Naming Strategy সেট করুন

PropertyNamingStrategies ব্যবহার করে ফিল্ড নামের কনভেনশন পরিবর্তন করুন।

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;

public class PropertyNamingStrategyExample {
    public static void main(String[] args) throws Exception {
        ObjectMapper objectMapper = new ObjectMapper();

        // Set SNAKE_CASE naming strategy
        objectMapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);

        // Create a Person object
        Person person = new Person("John", "Doe", 30);

        // Serialize: Java Object to JSON
        String json = objectMapper.writeValueAsString(person);
        System.out.println("Serialized JSON with SNAKE_CASE:");
        System.out.println(json);

        // Deserialize: JSON to Java Object
        String jsonInput = """
        {
          "first_name": "Jane",
          "last_name": "Smith",
          "age": 25
        }
        """;

        Person deserializedPerson = objectMapper.readValue(jsonInput, Person.class);
        System.out.println("Deserialized Object:");
        System.out.println(deserializedPerson.getFirstName() + " " + deserializedPerson.getLastName());
    }
}

Output

Serialized JSON

{
  "first_name": "John",
  "last_name": "Doe",
  "age": 30
}

Deserialized Object

Jane Smith

Custom Property Naming Strategy

আপনার প্রয়োজন অনুযায়ী কাস্টম স্ট্র্যাটেজি তৈরি করতে পারেন:

import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.introspect.AnnotatedField;

public class CustomNamingStrategy extends PropertyNamingStrategy {
    @Override
    public String nameForField(MapperConfig<?> config, AnnotatedField field, String defaultName) {
        return "custom_" + defaultName; // Add "custom_" prefix to every field
    }
}

এই কাস্টম স্ট্র্যাটেজি ব্যবহার করতে ObjectMapper-এ সেট করুন:

objectMapper.setPropertyNamingStrategy(new CustomNamingStrategy());

Jackson-এর PropertyNamingStrategy এবং PropertyNamingStrategies ব্যবহার করে JSON ফিল্ডের নাম সহজেই কাস্টমাইজ করা যায়।

মূল সুবিধা:

  1. Standard Naming Conventions: snake_case, kebab-case ইত্যাদি সহজেই সামঞ্জস্যপূর্ণ করা।
  2. Custom Mapping: নিজের প্রয়োজন মতো কাস্টম স্ট্র্যাটেজি ব্যবহার।
  3. Flexible Integration: বিভিন্ন JSON ফরম্যাটের সাথে সহজে কাজ করা।

এটি REST API, ডেটা ট্রান্সফার অবজেক্ট (DTO), এবং অন্যান্য JSON ইন্টিগ্রেশন ক্ষেত্রে অত্যন্ত কার্যকর।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...